<?php

declare(strict_types=1);

namespace Zlf\Unit;

use Exception;

class Is
{

    /**
     * 判断字符串是否JSON
     * @param string $string
     * @return bool
     */
    public static function json(string $string): bool
    {
        try {
            if (extension_loaded('json')) {
                $value = json_decode($string);
                if (is_null($value) || json_last_error()) {
                    return false;
                }
                return true;
            }
            return false;
        } catch (Exception $exception) {
            return false;
        }
    }

    /**
     * 判断数组是否是列表
     * @param array $list
     * @return bool
     */
    public static function list(array $list): bool
    {
        if (function_exists('array_is_list')) {
            return array_is_list($list);//此函数php8.1内置
        } else {
            $sort = 0;
            foreach ($list as $index => $item) {
                if ($sort != $index) {
                    return false;
                }
                $sort++;
            }
            return true;
        }
    }

    /**
     * 判断值是否非空值,只判断了字符串,数组,数字
     * @param mixed $value
     */
    public static function notEmpty($value): bool
    {
        if (is_array($value) || is_string($value)) {
            return !empty($value);
        } elseif (is_numeric($value)) {//非字符和数组类型视空
            return true;
        }
        return false;
    }
}